// 自动收集并导出 common 目录下所有组件
// 规则：
// 1. 当前目录下的所有 .vue 文件
// 2. 当前目录下第一层子目录（不递归更深层）中的所有 .vue 文件

// eslint-disable-next-line @typescript-eslint/no-explicit-any
type Component = any;

// 收集当前目录下的 .vue 文件
const modules = (import.meta as any).glob("./*.vue", { eager: true });
// 收集第一层子目录中的 .vue 文件（./*/*.vue 表示仅匹配一层目录）
const subModules = (import.meta as any).glob("./*/*.vue", { eager: true });

const components: Component[] = [];

function collect(mods: Record<string, any>) {
    Object.values(mods).forEach((mod: any) => {
        // 如果是 `defineComponent` 导出，则可能在 `default` 下
        const component = mod?.default || mod;
        if (component) {
            components.push(component as Component);
        }
    });
}

collect(modules);
collect(subModules);

export { components };
